#include "config.h"

int main(int argc, char *argv[])
{
    //需要修改的数据库信息,登录名,密码,库名
    string user = "root";
    string passwd = "zr123456";
    string databasename = "yourdb";

    //命令行解析
    Config config;
    config.parse_arg(argc, argv);

    WebServer server;

    //初始化
	//初始化服务器参数
    server.init(config.PORT, user, passwd, databasename, config.LOGWrite, 
                config.OPT_LINGER, config.TRIGMode,  config.sql_num,  config.thread_num, 
                config.close_log, config.actor_model);
    

    //初始化日志		并根据传入命令行参数，决定 同步/异步运行日志
    server.log_write();

    //初始化数据库连接池和读取表
    server.sql_pool();

    //创建线程池
    server.thread_pool();

    //设置监听文件描述符和读写文件描述符的 触发模式（LT、ET）
    server.trig_mode();

    //listenfd开始监听					并创建epoll监听树，将listenfd挂上树
    server.eventListen();

    //开始监听epoll对应事件				根据返回事件的不同，调用不同的处理函数（listenfd有新连接请求事件、connfd有读写事件、异常事件、信号事件等）
    server.eventLoop();

    return 0;
}
